package com.example.administrator.basedemos.api;

import com.example.administrator.basedemos.bean.AndroidDataBean;
import com.example.administrator.basedemos.bean.AppInfo;
import com.example.administrator.basedemos.bean.BlogBean;
import com.example.administrator.basedemos.bean.PostBean;
import com.example.net.bean.BaseBean;

import java.util.List;

import io.reactivex.Completable;
import io.reactivex.Observable;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Url;

/**
 * 创建者     ZCL
 * 创建时间   2018/3/20 16:44
 * 描述	      ${TODO}
 * <p>
 * 更新者     $Author$
 * 更新时间   $Date$
 * 更新描述   ${TODO}
 */

public interface GankApi {

    @GET("api/data/{categroy}/{size}/{page}")
    Call<AndroidDataBean> eduGet(@Path("categroy") String categroy,
                          @Path("size") int size,
                          @Path("page") int page);

    @GET()
    Call<AndroidDataBean> eduGetUrl(@Url String url);

    /**
     * 提交表单
     *
     * @return url    想要提交的网页地址
     * desc	对干货内容的描述	单独的文字描述
     * who	提交者 ID	干货提交者的网络 ID
     * type	干货类型	可选参数: Android | iOS | 休息视频 | 福利 | 拓展资源 | 前端 | 瞎推荐 | App
     * debug	当前提交为测试数据	如果想要测试数据是否合法, 请设置 debug 为 true! 可选参数: true | false
     */
    @FormUrlEncoded
    @POST("api/add2gank")
    Call<ResponseBody> eduPost(@Field("url") String url,
                               @Field("desc") String desc,
                               @Field("who") String who,
                               @Field("type") String type,
                               @Field("debug") String debug);

    /**
     * rx系列
     */
    @GET("api/data/{categroy}/{size}/{page}")
    Observable<AndroidDataBean> rxGet(@Path("categroy") String ca,
                                      @Path("size") int size,
                                      @Path("page") int page);

    @FormUrlEncoded
    @POST("api/add2gank")
    Observable<PostBean> rxPost(@Field("url") String url,
                                @Field("desc") String desc,
                                @Field("who") String who,
                                @Field("type") String type,
                                @Field("debug") String debug);

    /**
     * Completable  不关心返回的数据只关心成功与否
     * @param url
     * @param desc
     * @param who
     * @param type
     * @param debug
     * @return
     */
    @FormUrlEncoded
    @POST("api/add2gank")
    Completable rxCompletable(@Field("url") String url,
                               @Field("desc") String desc,
                               @Field("who") String who,
                               @Field("type") String type,
                               @Field("debug") String debug);
    /**
     * rx系列basebean 返回basebean包装好的
     */
    @GET("api/data/{categroy}/{size}/{page}")
    Observable<BaseBean<List<BlogBean>>> rxGetByWrapper(@Path("categroy") String ca,
                                                        @Path("size") int size,
                                                        @Path("page") int page);
    /**
     * rx系列basebean 不返回basebean   直接区用内部数据
     */
    @GET("api/data/{categroy}/{size}/{page}")
    Observable<List<BlogBean>> rxGetNoWrapper(@Path("categroy") String ca,
                                                     @Path("size") int size,
                                                     @Path("page") int page);

    /**
     * 图片上传
     * @param requestBody
     * @return
     */
   @POST("app/upload/imag")
    Observable<BaseBean<AppInfo>> uploadImg(@Body RequestBody requestBody);

}
